#ifndef _FSM_OO_H_
#define _FSM_OO_H_

struct _fsm_t;
typedef struct _fsm_t fsm_t;

typedef struct _fsm_state_t
{
    void (*EnterAct)(void);
    void (*RunningAct)(void);  
    void (*ExitAct)(void);
}fsm_state_t;


typedef struct _fsm_t
{
    fsm_state_t *p_state;
}fsm_t;

void fsm_init(fsm_t *p_this, fsm_state_t *p_initial_state);    
void transfer_state(fsm_t *p_this,fsm_state_t *p_new_state);
void fsm_running(fsm_t *p_fsm);

#endif




